<html>
  <body>

    <p>This package contains the game model, which describes how the
      individual game objects, such as units, buildings, tiles and so on,
      interact. The model is extended by the server and used by the client.
      It should be independent of all packages outside of
      the <code>common</code> hierarchy.</p>

    <p>The superclass of most model objects is {@link
      net.sf.freecol.common.model.FreeColObject FreeColObject}, which
      provides serialization. The <code>FreeColObject</code> is identified
      by an ID, which is generally unique. The <code>Feature</code> class
      and its descendants is a notable exception to this rule,
      however, since Features with similar effects are provided by
      various model objects and are grouped by their ID. A fur production
      bonus, for example, might be granted by a Tile Type, a Unit Type
      and a Founding Father.</p>

    <p>The main model objects inherit from the {@link
      net.sf.freecol.common.model.FreeColGameObject
      FreeColGameObject}, which contains a reference to the {@link
      net.sf.freecol.common.model.Game Game}
      class. Many model objects have a <code>type</code>, which
      inherits from the {@link
      net.sf.freecol.common.model.FreeColGameObjectType
      FreeColGameObjectType}. Units have a UnitType, for
      example. These Game Object Types are defined by the {@link
      net.sf.freecol.common.model.Specification Specification}, which
      is loaded from an XML file when the game starts up.</p>

  </body>
</html>

